home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
splitcal.bas
< prev
next >
Wrap
BASIC Source File
|
1988-11-09
|
3KB
|
77 lines
100 CLS:PRINT TAB(10);"PRINT A CALENDAR FOR ANY YEAR SINCE 1582":PRINT
110 '
120 ' Judson D. McClendon
130 ' 844 Sun Valley Road
140 ' Birmingham, AL 35215
150 '
160 ' Compuserve 74415,1003
165 ' Additions for split year by Lew Paper
170 '
200 DEF FNDOW(M,D,Y)=(D+M+M+INT((M+1)*.6)+Y+Y\4-Y\100+Y\400+1) MOD 7
210 DIM MON$(23),MAX(23),DOM(23),DOW(23) ' Dimension by L.P.
220 FOR I=1 TO 12 :READ MON$(I) :NEXT
230 FOR I=1 TO 11 : MON$(I + 12) = MON$(I): NEXT ' L.P.
240 DATA " J A N U A R Y "," F E B R U A R Y "," M A R C H "
250 DATA " A P R I L "," M A Y "," J U N E "
260 DATA " J U L Y "," A U G U S T "," S E P T E M B E R"
270 DATA " O C T O B E R "," N O V E M B E R "," D E C E M B E R "
280 FOR I=1 TO 12 :READ MAX(I) :NEXT
290 FOR I=1 TO 11: MAX(I + 12) = MAX(I): NEXT ' L.P.
300 DATA 31,28,31,30,31,30,31,31,30,31,30,31
400 INPUT "What year to start: ",YEAR1 ' Variable name by L.P.
410 IF YEAR<100 THEN YEAR=YEAR+1900 ' Assume 20th century if not specified
420 IF YEAR<1582 THEN PRINT "Not valid before 1582" :GOTO 400
430 YEAR2 = YEAR1 + 1 ' L.P.
440 INPUT "What month to start: ",MONTH1 ' L.P.
450 IF (MONTH1 < 1) OR (MONTH1 > 12) THEN PRINT, "Not a valid month": GOTO 440 'L.P.
460 MONTH2 = MONTH1 + 11 ' L.P.
470 IF ((YEAR1 MOD 4)<>0) OR ((YEAR1 MOD 100)=0 AND (YEAR1 MOD 400)<>0) THEN 490 ' L.P. for variable and branch
480 MAX(2)=29
490 IF ((YEAR2 MOD 4)<>0) OR ((YEAR2 MOD 100)=0 AND (YEAR2 MOD 400)<>0) THEN 510 ' L.P.
500 MAX(14) = 29 ' L.P.
510 PRINT :INPUT "How many copies";COPIES
600 FOR COUNT=1 TO COPIES
610 LPRINT
620 IF MONTH1 = 1 THEN LPRINT TAB(27);"CALENDAR FOR THE YEAR";YEAR1: GOTO 640 ' L.P. for IF and GOTO
630 LPRINT TAB(24);"CALENDAR FOR THE YEARS";YEAR1; " -"; YEAR2 ' L.P.
640 LPRINT ' L.P.
650 LPRINT :LPRINT
660 FOR MM=MONTH1 TO MONTH2 STEP 3 ' L.P. FOR MONTH?
670 FOR MONTH=MM TO MM+2
680 LPRINT TAB((MONTH-MM)*24+6);MON$(MONTH);
690 NEXT
700 LPRINT ' L.P.
710 IF MONTH1 = 1 THEN 770 ' L.P.
720 FOR MONTH=MM TO MM+2 ' L.P.
730 LPRINT TAB((MONTH-MM)*24+12); ' L.P.
740 IF MONTH < 13 THEN LPRINT YEAR1; ELSE LPRINT YEAR2; ' L.P.
750 NEXT ' L.P.
760 LPRINT ' L.P.
770 LPRINT ' L.P. to remove one LPRINT
780 FOR MONTH=MM TO MM+2
790 LPRINT TAB((MONTH-MM)*24+6)"SU MO TU WE TH FR SA";
800 DAY=1 :GOSUB 1100 :DOW(MONTH)=DOW :DOM(MONTH)=1
810 NEXT
820 LPRINT
830 FOR WEEK=1 TO 6
840 FOR MONTH=MM TO MM+2
850 WHILE DOM(MONTH)<=MAX(MONTH) AND DOW(MONTH)<7
860 LPRINT TAB((MONTH-MM)*24+DOW(MONTH)*3+6);"";
870 LPRINT USING "##";DOM(MONTH);
880 DOM(MONTH)=DOM(MONTH)+1
890 DOW(MONTH)=DOW(MONTH)+1
900 WEND
910 IF DOW(MONTH)>6 THEN DOW(MONTH)=0
920 NEXT
930 LPRINT
940 NEXT
950 LPRINT :LPRINT :LPRINT
960 NEXT
970 LPRINT CHR$(12);
980 NEXT
990 SYSTEM
1100 IF MONTH<3 THEN DOW=FNDOW(MONTH+12,DAY,YEAR1-1): RETURN ' L.P. to remove ELSE
1110 IF MONTH<15 THEN DOW=FNDOW(MONTH,DAY,YEAR1): RETURN ' L.P. for 15 and RETURN
1120 DOW=FNDOW(MONTH-12,DAY,YEAR2) ' L.P.
1130 RETURN